package com.pureut.storage.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.pureut.storage.domain.PurchaseReceipt;
import com.pureut.storage.domain.SalesReturn;
import com.pureut.storage.dto.*;
import com.pureut.storage.vo.GetDataByCodeVo;
import com.pureut.storage.vo.ImparityVo;
import com.pureut.storage.vo.SalesReturnVo;
import com.sale.common.mybatis.core.mapper.BaseMapperPlus;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/***
 * 销售退货mapper
 * Author:C
 * Date:2022/12/29 11:13
 * @DESC
 */
@Mapper
public interface SalesReturnMapper extends BaseMapperPlus<SalesReturnMapper, SalesReturn, SalesReturn> {

    /**
     * 销售退货列表
     */
    Page<SalesReturnDto> getSaleList(@Param("page") Page<SalesReturnDto> page, @Param("salesReturnVo") SalesReturnVo salesReturnVo);

    /**
     * 通过id获取销售退货详情
     */
    SalesReturnDto getSaleById(long id);

    /**
     * 销售退货列表(手持pda)
     */
    Page<AndroidPdaDto> getSaleAndroidList(@Param("deptId") Long deptId, @Param("page") Page<AndroidPdaDto> page);

    /**
     * 通过id获取销售退货详情(手持pda)
     */
    AndroidPdaViewDto getSaleByIdAndroid(long id);

    /**
     * 销售退货列表(手持pda 拣货撤销)
     */
    Page<AndroidPdaDto> getSaleAndroidpickCancellationList(@Param("page") Page<AndroidPdaDto> page);

    /**
     * 销售退货手持pda 交接列表
     */
    Page<AndroidHandoverPdaDto> getAndroidHandoverList(@Param("page") Page<AndroidHandoverPdaDto> page);

    /**
     * 销售退货手持pda 交接详情
     */
    AndroidHandoverPdaDto getAndroidHandoverView(long id);

    /**
     * 根据多个id获取数据
     */
    List<SalesReturnExportDto> getDataByIdStr(@Param("idList") List<String> idList);

    /**
     * 销售退货列表(导出查询)
     */
    List<SalesReturnExportDto> getSaleListOut(SalesReturnVo salesReturnVo);

    /**
     * 多个列表查询数据（采购发票页面使用）
     */
    Page<ImparityDto> selectImparityList(@Param("page") Page<ImparityDto> page, @Param("imparityVo") ImparityVo imparityVo);

    /**
     * 财务-核销单 通过获取未全部核销的销售退货单
     */
    List<ImparityDto> getNoVerification(@Param("getDataByCodeVo") GetDataByCodeVo getDataByCodeVo);

    /**
     * 查询仓库单据数据（结账反结账使用）
     */
    List<SalesReturnDto> getQClosingDocument(String time);

    /**
     * 查询仓库单据数据（结账反结账使用）
     */
    List<SalesReturnDto> getRClosingDocument(String time);
}
